/**
 * TODO:文件描述
 *
 * @title client.go
 * @projectName grpcDemo
 * @author niuk
 * @date 2024/4/9 9:00
 */

package client

import (
	"context"
	"fmt"
	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials"
	"grpcDemo/auth"
	"grpcDemo/calc"
)

func init() {
}

func Test(addr string) {
	// 注意:这里使用的是服务端证书和证书中的名称
	creds, err := credentials.NewClientTLSFromFile("./cert/server.pem", "api.grpcdemo.com")
	if err != nil {
		panic(err)
	}

	// 创建rpc连接
	cc, err := grpc.NewClient(addr,
		grpc.WithTransportCredentials(creds),
		// 默认bearer token
		grpc.WithPerRPCCredentials(&auth.GrpcDemoAuth{
			Ak:     "grpc-demo-ak",
			Sk:     "grpc-demo-sk",
			UseTls: true,
		}))
	if err != nil {
		panic(err)
	}
	defer cc.Close()
	// 创建rpc调用客户端
	cli := calc.NewCalcClient(cc)
	// 调用具体的rpc方法
	versionRsp, err := cli.Version(context.Background(), &calc.Empty{})
	if err != nil {
		panic(err)
	}
	fmt.Println("server version:", versionRsp.GetStr())

	sumRsp, err := cli.Sum(context.Background(), &calc.CalcRequest{
		A: 1,
		B: 2,
	})
	fmt.Println("1+2=", sumRsp.GetNum())
}
